| Previous | Chapter contents | Chapter top | Section top | Next |
The QuickTime VR Manager allows you to define a prescreen buffer imaging completion procedure that is called whenever QuickTime VR finishes drawing a panorama image in the prescreen buffer. Typically, your completion procedure will add graphical elements to the image before the buffer is copied to the screen. For instance, a flight simulator could overlay a heads-up display containing information about the aircraft (its altitude, velocity, and so forth).
You install a prescreen buffer imaging completion procedure by passing its address to the QTVRSetPrescreenImagingCompleteProc function:
theErr = QTVRSetPrescreenImagingCompleteProc(theInstance,
NewQTVRImagingCompleteProc(MyImagingCompleteProc),
(SInt32)&theData, 0);
Listing 2-11 defines a simple completion routine that overlays a picture onto the screen image.
Listing 11 Overlaying images in the prescreen buffer
pascal OSErr MyImagingCompleteProc (QTVRInstance, MyDataPtr theDataPtr)
{
if (theDataPtr->hasLogoPict) {
GWorldPtr theOffscreenGWorld;
GDHandle theGD;
Rect gwRect;
Rect picRect;
// The current graphics world is set to the prescreen buffer.
GetGWorld (&theOffscreenGWorld, &theGD);
gwRect = (*(theOffscreenGWorld->portPixMap))->bounds;
picRect = (*(theDataPtr->logoPict))->picFrame;
OffsetRect (&picRect, -picRect.left, -picRect.top);
OffsetRect (&picRect, gwRect.right - (picRect.right + 8),
gwRect.bottom - (picRect.bottom + 8));
// Draw logo in lower right corner
DrawPicture (theDataPtr->logoPict, &picRect);
}
return noErr;
}
On entry to the prescreen buffer imaging completion routine, the current graphics world is set to QuickTime VR's prescreen buffer. The MyImagingCompleteProc function defined in Listing 2-11 retrieves the dimensions of that buffer and then draws a picture in the lower right corner of that buffer.
| Previous | Chapter contents | Chapter top | Section top | Next |